home *** CD-ROM | disk | FTP | other *** search
/ Games of Daze / Infomagic - Games of Daze (Summer 1995) (Disc 1 of 2).iso / djgpp / contrib / sblaster / sb.h < prev   
C/C++ Source or Header  |  1993-11-16  |  3KB  |  100 lines

  1. /*
  2.  * Offsets relative to base I/O address.
  3.  */
  4. #define SB_LEFT_FM_STATUS    0x00    /* Pro only */
  5. #define SB_LEFT_FM_ADDRESS    0x00    /* Pro only */
  6. #define SB_LEFT_FM_DATA        0x01    /* Pro only */
  7. #define SB_RIGHT_FM_STATUS    0x02    /* Pro only */
  8. #define SB_RIGHT_FM_ADDRESS    0x02    /* Pro only */
  9. #define SB_RIGHT_FM_DATA    0x03    /* Pro only */
  10. #define SB_MIXER_ADDRESS    0x04    /* Pro only */
  11. #define SB_MIXER_DATA        0x05    /* Pro only */
  12. #define SB_DSP_RESET        0x06
  13. #define SB_FM_STATUS        0x08
  14. #define SB_FM_ADDRESS        0x08
  15. #define SB_FM_DATA        0x09
  16. #define SB_DSP_READ_DATA    0x0A
  17. #define SB_DSP_WRITE_DATA    0x0C
  18. #define SB_DSP_WRITE_STATUS    0x0C
  19. #define SB_DSP_DATA_AVAIL    0x0E
  20. #define SB_CD_ROM_DATA        0x10    /* Pro only */
  21. #define SB_CD_ROM_STATUS    0x11    /* Pro only */
  22. #define SB_CD_ROM_RESET        0x12    /* Pro only */
  23. #define SB_CD_ROM_ENABLE    0x13    /* Pro only */
  24.  
  25. #define SB_ADLIB_FM_STATUS    0x388
  26. #define SB_ADLIB_FM_ADDRESS    0x388
  27. #define SB_ADLIB_FM_DATA    0x389
  28.  
  29. /* Defines for 8237 DMA Controller IO addresses */
  30. #define SB_DMA        0
  31. #define SB_CH0_BASE    (SB_DMA+0)
  32. #define SB_CH0_COUNT    (SB_DMA+1)
  33. #define SB_CH1_BASE    (SB_DMA+2)
  34. #define SB_CH1_COUNT    (SB_DMA+3)
  35. #define SB_CH2_BASE    (SB_DMA+4)
  36. #define SB_CH2_COUNT    (SB_DMA+5)
  37. #define SB_CH3_BASE    (SB_DMA+6)
  38. #define SB_CH3_COUNT    (SB_DMA+7)
  39. #define SB_DMA_STATUS    (SB_DMA+8)
  40. #define SB_DMA_CMD    (SB_DMA+8)
  41. #define SB_DMA_REQUEST    (SB_DMA+9)
  42. #define SB_DMA_MASK    (SB_DMA+10)
  43. #define SB_DMA_MODE    (SB_DMA+11)
  44. #define SB_DMA_FF    (SB_DMA+12)
  45. #define SB_DMA_TMP    (SB_DMA+13)
  46. #define SB_DMA_CLEAR    (SB_DMA+13)
  47. #define SB_DMA_CLRMSK    (SB_DMA+14)
  48. #define SB_DMA_WRMSK    (SB_DMA+15)
  49. #define SB_DMAPAGE    0x80
  50.  
  51. /* Types of Soundblaster Cards */
  52. #define SB_TYPE_15    1
  53. #define SB_TYPE_PRO    2
  54. #define SB_TYPE_20    3
  55.  
  56. /* DSP Commands */
  57. #define SB_DIRECT_8_BIT_DAC    0x10
  58. #define SB_DMA_8_BIT_DAC    0x14
  59. #define SB_DMA_2_BIT_DAC    0x16
  60. #define SB_DMA_2_BIT_REF_DAC    0x17
  61. #define SB_DIRECT_ADC        0x20
  62. #define SB_DMA_ADC        0x24
  63. #define SB_MIDI_READ_POLL    0x30
  64. #define SB_MIDI_READ_IRQ    0x31
  65. #define SB_MIDI_WRITE_POLL    0x38
  66. #define SB_TIME_CONSTANT    0x40
  67. #define SB_DMA_4_BIT_DAC    0x74
  68. #define SB_DMA_4_BIT_REF_DAC    0x75
  69. #define SB_DMA_26_BIT_DAC    0x76
  70. #define SB_DMA_26_BIT_REF_DAC    0x77
  71. #define SB_HALT_DMA        0xD0
  72. #define SB_CONTINUE_DMA        0xD4
  73. #define SB_SPEAKER_ON        0xD1
  74. #define SB_SPEAKER_OFF        0xD3
  75. #define SB_DSP_ID        0xE0
  76. #define SB_DSP_VER        0xE1
  77. #define SB_MDAC1        0x61
  78. #define SB_MDAC2        0x62
  79. #define SB_MDAC3        0x63
  80. #define SB_MDAC4        0x64
  81. #define SB_MDAC5        0x65
  82. #define SB_MDAC6        0x66
  83. #define SB_MDAC7        0x67
  84.  
  85. /* Card parameters */
  86. extern unsigned int    sb_ioaddr;
  87. extern unsigned int    sb_irq;
  88. extern unsigned int    sb_dmachan;
  89. extern unsigned int    sb_type;
  90.  
  91. #define sb_writedac(x) {                        \
  92.     while(inportb(sb_ioaddr + SB_DSP_WRITE_STATUS) & 0x80);        \
  93.     outportb(sb_ioaddr + SB_DSP_WRITE_DATA, (x));            \
  94. }
  95.  
  96. #define sb_writemixer(x, y) {                        \
  97.     outportb(sb_ioaddr + SB_MIXER_ADDRESS, (x));            \
  98.     outportb(sb_ioaddr + SB_MIXER_DATA, (y));            \
  99. }
  100.